package com.zqr.lock;

/**
 * @author zqr
 * @since 2022/11/2
 */
public class VolatileDemo01 {
    private static boolean flag = false;
//    private static volatile boolean flag = false; //结束方式一：volatile修饰变量


    public static void main(String[] args) {
        new Thread(() -> {
            int i = 0;
            while (!flag) {
                i++;
//                System.out.println("i");   //结束方式二：这里加一句输出可以结束线程
                try {
                    Thread.sleep(10); //结束方式三：这里睡一会也能结束线程
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            System.out.println("线程运行结束"); //正常情况下外面改变标志位后这里不能结束线程
        }).start();

        try {
            //睡眠一秒后更改标志位
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        flag = true;
    }
}
